home *** CD-ROM | disk | FTP | other *** search
/ Creative Review 28 / Creative-Review-CD-ROM-28.iso / pc / kungfu / assets / game.dir / 00005_Script_game class < prev    next >
Text File  |  1997-08-08  |  7KB  |  335 lines

  1. -- game manager
  2. -- -------------------------------------------------- 
  3.  
  4. property gamelist
  5. property levellist
  6. property screenlist
  7.  
  8. property oldtype
  9. property type
  10.  
  11. property screennumber
  12. property levelnumber
  13.  
  14. property screencount
  15. property levelcount
  16.  
  17. property backcast
  18.  
  19. property loop
  20.  
  21. property oldbacks
  22. property oldloops 
  23.  
  24. property score
  25.  
  26. property speed
  27.  
  28. property bonuslist
  29. property starttime
  30.  
  31. property updategap
  32.  
  33. -- ==================================================
  34.  
  35. global gplayer
  36. global gbaddy
  37. global gboss
  38. global gsting
  39. global gtime
  40. global gback
  41. global gsound
  42.  
  43. -- ==================================================
  44. -- new method
  45. -- --------------------------------------------------
  46. on new me, props
  47.   
  48.   minit me, props
  49.   return me
  50.   
  51. end mnew 
  52.  
  53. -- ==================================================
  54. -- minit method
  55. -- --------------------------------------------------
  56. on minit me
  57.   
  58.   --  put "in minit game manager"
  59.   
  60.   set gamelist = data2list ( "game data" )
  61.   set bonuslist = data2list ( "bonus data" )
  62.   set oldtype = 0
  63.   set speed = 1
  64.   set updategap = 7
  65.   set oldbacks = [ "keys" ]
  66.   set oldloops = [ "loop.3.3" ]
  67.   
  68.   --  put "out minit game manager"
  69.   
  70. end minit
  71.  
  72. -- ==================================================
  73. -- mstartgame method
  74. -- --------------------------------------------------
  75. on mstartgame me
  76.   
  77.   --  put "in mstartgame game"
  78.   
  79.   set score = 0
  80.   
  81.   set levelnumber = 1
  82.   set screennumber = 1
  83.   
  84.   msetscreenlist me
  85.   mmove gsound, #game, #slide
  86.   mslide gback, backcast
  87.   
  88.   --  put "out mstartgame game"
  89.   
  90. end mstartgame me
  91.  
  92. -- ==================================================
  93. -- mfinishgame method
  94. -- --------------------------------------------------
  95. on mfinishgame me
  96.   
  97.   put "in mfinishgame game"
  98.   
  99.   hendgame
  100.   go frame "win"
  101.   
  102.   put "out mfinishgame game"
  103.   
  104. end mfinishgame
  105.  
  106. -- ==================================================
  107. -- mnext method
  108. -- --------------------------------------------------
  109. on mnextscreen me
  110.   
  111.   --  put "in mnextscreen game"
  112.   
  113.   if  not ( msetnextnumber ( me ) ) then return
  114.   msetscreenlist me
  115.   
  116.   mstopback gsound
  117.   
  118.   mdraw gplayer
  119.   
  120.   maddtask gtime, me, the timer
  121.   
  122.   -- put "out mnextscreen game"
  123.   
  124. end mnextscreen 
  125.  
  126. -- ==================================================
  127. -- mdotask method
  128. -- --------------------------------------------------
  129. on mdotask me
  130.   
  131.   --  put "in mdotask game"
  132.   
  133.   if msoundbusy ( gsound ) then return updategap
  134.   
  135.   mmove gsound, #game, #slide
  136.   mslide gback, backcast
  137.   
  138.   return false
  139.   
  140.   --   put "out mdotask game"
  141.   
  142. end mdotask me
  143.  
  144. -- ==================================================
  145. -- mstartscreen method
  146. -- --------------------------------------------------
  147. on mstartscreen me
  148.   
  149.   --  put "in mstartscreen game"
  150.   
  151.   case type of
  152.       
  153.     #baddy:  
  154.       mback gsound, loop
  155.       mstart gplayer
  156.       mstart gbaddy, screenlist
  157.       
  158.     #boss:  
  159.       mback gsound, loop
  160.       mstart gplayer
  161.       mstart gboss, screenlist
  162.       
  163.     #sting: 
  164.       
  165.       mstart gsting, screenlist
  166.       
  167.   end case
  168.   
  169.   set starttime = the timer
  170.   
  171.   --  put "out mstartscreen game"
  172.   
  173. end mstartscreen
  174.  
  175. -- ==================================================
  176. -- on mgetbonus method
  177. -- --------------------------------------------------
  178. on mgetbonus me
  179.   
  180. --  put "in mgetbonus game"
  181.   
  182.   set timetaken = the timer - starttime
  183.   set timetaken =  timetaken  / 60
  184.   
  185.   set levelbonus = getaprop ( bonuslist, levelnumber )
  186.   set screenbonus = getaprop ( levelbonus, screennumber )
  187.   set targettime = getpropat ( screenbonus, 1 )
  188.   set bonusrate = getat ( screenbonus, 1 )
  189.   
  190. --  put "targettime: " , targettime
  191. --  put "timetaken: " , timetaken
  192.   
  193.   if timetaken < targettime then
  194.     set bonussecs = targettime - timetaken
  195.     set bonusscore = bonussecs * bonusrate
  196.     
  197. --    put "bonusscore: " , bonusscore
  198.     
  199.     return bonusscore
  200.     
  201.   end if
  202.   
  203. --  put "no bonus !"
  204.   
  205.   return 0
  206.   
  207. --  put "out mgetbonus game"
  208.   
  209. end mgetbonus
  210.  
  211.  
  212. -- ==================================================
  213. -- mfinishscreen method
  214. -- --------------------------------------------------
  215. on mfinishscreen me
  216.   
  217.   --  put "in mfinishscreen game"
  218.   
  219.   case type of
  220.     #baddy: 
  221.       mabort gplayer
  222.       mclean gcell
  223.     #boss:
  224.       mabort gplayer
  225.       mclean gcell
  226.     #sting:
  227.       mhide gsting
  228.   end case
  229.   
  230.   mdraw gscore
  231.   
  232.   mnextscreen me
  233.   return false
  234.   
  235.   --  put "out mfinishscreen game"
  236.   
  237. end mfinishscreen
  238.  
  239. -- ==================================================
  240. -- mfinishslide method
  241. -- --------------------------------------------------
  242. on mfinishslide me
  243.   
  244.   --  put "in mfinishslide game"
  245.   
  246.   munloadback me
  247.   mmove gsound, #game, #endslide
  248.   mstartscreen me
  249.   
  250.   --  put "out mfinishslide game"
  251.   
  252. end mfinishslide
  253.  
  254.  
  255. -- ==================================================
  256. -- msetnextnumber method
  257. -- --------------------------------------------------
  258. on msetnextnumber me
  259.   
  260.   --  put "in msetnextnumber game"
  261.   
  262.   set screennumber = screennumber + 1
  263.   
  264.   if screennumber > screencount then
  265.     
  266.     set levelnumber = levelnumber + 1
  267.     
  268.     if levelnumber > levelcount then 
  269.       mfinishgame me
  270.       return false
  271.     end if
  272.     
  273.     set screennumber = 1
  274.     
  275.     
  276.   end if
  277.   
  278.   return true
  279.   
  280.   -- put "out msetnextnumber game"
  281.   
  282. end msetnextnumber me
  283.  
  284. -- ==================================================
  285. -- msetscreenlist method
  286. -- --------------------------------------------------
  287. on msetscreenlist me
  288.   
  289.   --  put "in msetscreenlist game class :"
  290.   
  291.   set oldtype = type
  292.   
  293.   set levellist = getaprop ( gamelist , levelnumber )
  294.   set screenlist = getaprop ( levellist, screennumber )
  295.   
  296.   set levelcount = count ( gamelist ) 
  297.   set screencount = count ( levellist ) 
  298.   
  299.   set type = getaprop ( screenlist, #type )
  300.   set backcast = getaprop ( screenlist, #back )
  301.   
  302.   set loop = getaprop ( screenlist, #loop )
  303.   
  304.   add oldbacks, backcast
  305.   add oldloops, loop
  306.   preloadcast backcast
  307.   preload loop
  308.   
  309. --  put "preload: " , backcast, loop
  310.   
  311.   --  put "out msetscreenlist game class :"
  312.   
  313. end msetscreenlist
  314.  
  315. -- ==================================================
  316. -- munloadback method
  317. -- --------------------------------------------------
  318. on munloadback me
  319.   
  320. --  put "in munloadback game class :"
  321.   
  322.   set unloadback = getat ( oldbacks , 1 )
  323.   deleteat ( oldbacks, 1 )
  324.   unloadmember unloadback 
  325.   
  326.   set unloadloop = getat ( oldloops , 1 )
  327.   deleteat ( oldloops, 1 )
  328.   if stringp ( unloadloop ) then unloadmember unloadloop 
  329.   
  330.   put "munloadback: " , unloadback
  331.   put "munloadloop: " , unloadloop 
  332.   
  333. --  put "out munloadback game class :"
  334.   
  335. end munloadback